/*
 *  IControl.cs
 *  
 *  [Description of the use of this file.]
 *  
 *  Copyright (c) 2009, Richard Bao Labs.
 *  
 *  The contents of this file are subject to the Mozilla License
 *  Version 1.1 (the "License"); you may not use this file except in
 *  compliance with the License. You may obtain a copy of the License at
 *  
 *  http://www.mozilla.org/MPL/
 *  
 *  Software distributed under the License is distributed on an "AS IS"
 *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
 *  the License for the specific language governing rights and limitations
 *  under the License.
 *  
 *  The Original Code is RichControlLibrary.
 *  
 *  The Initial Developer of the Original Code is Richard Bao Labs.
 *  All Rights Reserved.
 */

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Layout;
using System.ComponentModel;
using System.Security.Permissions;

namespace RichControlLibrary.Internal
{
    internal interface IControl
    {
        // Summary:
        //     Gets the System.Windows.Forms.AccessibleObject assigned to the control.
        //
        // Returns:
        //     The System.Windows.Forms.AccessibleObject assigned to the control.
        AccessibleObject AccessibilityObject { get; }
        //
        // Summary:
        //     Gets or sets the default action description of the control for use by accessibility
        //     client applications.
        //
        // Returns:
        //     The default action description of the control for use by accessibility client
        //     applications.
        string AccessibleDefaultActionDescription { get; set; }
        //
        // Summary:
        //     Gets or sets the description of the control used by accessibility client
        //     applications.
        //
        // Returns:
        //     The description of the control used by accessibility client applications.
        //     The default is null.
        string AccessibleDescription { get; set; }
        //
        // Summary:
        //     Gets or sets the name of the control used by accessibility client applications.
        //
        // Returns:
        //     The name of the control used by accessibility client applications. The default
        //     is null.
        string AccessibleName { get; set; }
        //
        // Summary:
        //     Gets or sets the accessible role of the control
        //
        // Returns:
        //     One of the values of System.Windows.Forms.AccessibleRole. The default is
        //     Default.
        //
        // Exceptions:
        //   System.ComponentModel.InvalidEnumArgumentException:
        //     The value assigned is not one of the System.Windows.Forms.AccessibleRole
        //     values.
        AccessibleRole AccessibleRole { get; set; }
        //
        // Summary:
        //     Gets or sets a value indicating whether the control can accept data that
        //     the user drags onto it.
        //
        // Returns:
        //     true if drag-and-drop operations are allowed in the control; otherwise, false.
        //     The default is false.
        bool AllowDrop { get; set; }
        //
        // Summary:
        //     Gets or sets the edges of the container to which a control is bound and determines
        //     how a control is resized with its parent.
        //
        // Returns:
        //     A bitwise combination of the System.Windows.Forms.AnchorStyles values. The
        //     default is Top and Left.
        AnchorStyles Anchor { get; set; }
        //
        // Summary:
        //     Gets or sets where this control is scrolled to in System.Windows.Forms.ScrollableControl.ScrollControlIntoView(System.Windows.Forms.Control).
        //
        // Returns:
        //     A System.Drawing.Point specifying the scroll location. The default is the
        //     upper-left corner of the control.
        Point AutoScrollOffset { get; set; }
        //
        // Summary:
        //     This property is not relevant for this class.
        //
        // Returns:
        //     true if enabled; otherwise, false.
        bool AutoSize { get; set; }
        //
        // Summary:
        //     Gets or sets the background color for the control.
        //
        // Returns:
        //     A System.Drawing.Color that represents the background color of the control.
        //     The default is the value of the System.Windows.Forms.Control.DefaultBackColor
        //     property.
        Color BackColor { get; set; }
        //
        // Summary:
        //     Gets or sets the background image displayed in the control.
        //
        // Returns:
        //     An System.Drawing.Image that represents the image to display in the background
        //     of the control.
        Image BackgroundImage { get; set; }
        //
        // Summary:
        //     Gets or sets the background image layout as defined in the System.Windows.Forms.ImageLayout
        //     enumeration.
        //
        // Returns:
        //     One of the values of System.Windows.Forms.ImageLayout (System.Windows.Forms.ImageLayout.Center
        //     , System.Windows.Forms.ImageLayout.None, System.Windows.Forms.ImageLayout.Stretch,
        //     System.Windows.Forms.ImageLayout.Tile, or System.Windows.Forms.ImageLayout.Zoom).
        //     System.Windows.Forms.ImageLayout.Tile is the default value.
        //
        // Exceptions:
        //   System.ComponentModel.InvalidEnumArgumentException:
        //     The specified enumeration value does not exist.
        ImageLayout BackgroundImageLayout { get; set; }
        //
        // Summary:
        //     Gets or sets the System.Windows.Forms.BindingContext for the control.
        //
        // Returns:
        //     A System.Windows.Forms.BindingContext for the control.
        BindingContext BindingContext { get; set; }
        //
        // Summary:
        //     Gets the distance, in pixels, between the bottom edge of the control and
        //     the top edge of its container's client area.
        //
        // Returns:
        //     An System.Int32 representing the distance, in pixels, between the bottom
        //     edge of the control and the top edge of its container's client area.
        int Bottom { get; }
        //
        // Summary:
        //     Gets or sets the size and location of the control including its nonclient
        //     elements, in pixels, relative to the parent control.
        //
        // Returns:
        //     A System.Drawing.Rectangle in pixels relative to the parent control that
        //     represents the size and location of the control including its nonclient elements.
        Rectangle Bounds { get; set; }
        //
        // Summary:
        //     Gets a value indicating whether the control can receive focus.
        //
        // Returns:
        //     true if the control can receive focus; otherwise, false.
        bool CanFocus { get; }
        //
        // Summary:
        //     Gets a value indicating whether the control can be selected.
        //
        // Returns:
        //     true if the control can be selected; otherwise, false.
        bool CanSelect { get; }
        //
        // Summary:
        //     Gets or sets a value indicating whether the control has captured the mouse.
        //
        // Returns:
        //     true if the control has captured the mouse; otherwise, false.
        bool Capture { get; set; }
        //
        // Summary:
        //     Gets or sets a value indicating whether the control causes validation to
        //     be performed on any controls that require validation when it receives focus.
        //
        // Returns:
        //     true if the control causes validation to be performed on any controls requiring
        //     validation when it receives focus; otherwise, false. The default is true.
        bool CausesValidation { get; set; }
        //
        // Summary:
        //     Gets the rectangle that represents the client area of the control.
        //
        // Returns:
        //     A System.Drawing.Rectangle that represents the client area of the control.
        Rectangle ClientRectangle { get; }
        //
        // Summary:
        //     Gets or sets the height and width of the client area of the control.
        //
        // Returns:
        //     A System.Drawing.Size that represents the dimensions of the client area of
        //     the control.
        Size ClientSize { get; set; }
        //
        // Summary:
        //     Gets the name of the company or creator of the application containing the
        //     control.
        //
        // Returns:
        //     The company name or creator of the application containing the control.
        string CompanyName { get; }
        //
        // Summary:
        //     Gets a value indicating whether the control, or one of its child controls,
        //     currently has the input focus.
        //
        // Returns:
        //     true if the control or one of its child controls currently has the input
        //     focus; otherwise, false.
        bool ContainsFocus { get; }
        //
        // Summary:
        //     Gets or sets the shortcut menu associated with the control.
        //
        // Returns:
        //     A System.Windows.Forms.ContextMenu that represents the shortcut menu associated
        //     with the control.
        ContextMenu ContextMenu { get; set; }
        //
        // Summary:
        //     Gets or sets the System.Windows.Forms.ContextMenuStrip associated with this
        //     control.
        //
        // Returns:
        //     The System.Windows.Forms.ContextMenuStrip for this control, or null if there
        //     is no System.Windows.Forms.ContextMenuStrip. The default is null.
        ContextMenuStrip ContextMenuStrip { get; set; }
        //
        // Summary:
        //     Gets the collection of controls contained within the control.
        //
        // Returns:
        //     A System.Windows.Forms.Control.ControlCollection representing the collection
        //     of controls contained within the control.
        Control.ControlCollection Controls { get; }
        //
        // Summary:
        //     Gets a value indicating whether the control has been created.
        //
        // Returns:
        //     true if the control has been created; otherwise, false.
        bool Created { get; }
        //
        // Summary:
        //     Gets or sets the cursor that is displayed when the mouse pointer is over
        //     the control.
        //
        // Returns:
        //     A System.Windows.Forms.Cursor that represents the cursor to display when
        //     the mouse pointer is over the control.
        Cursor Cursor { get; set; }
        //
        // Summary:
        //     Gets the data bindings for the control.
        //
        // Returns:
        //     A System.Windows.Forms.ControlBindingsCollection that contains the System.Windows.Forms.Binding
        //     objects for the control.
        ControlBindingsCollection DataBindings { get; }
        //
        // Summary:
        //     Gets the rectangle that represents the display area of the control.
        //
        // Returns:
        //     A System.Drawing.Rectangle that represents the display area of the control.
        Rectangle DisplayRectangle { get; }
        //
        // Summary:
        //     Gets a value indicating whether the base System.Windows.Forms.Control class
        //     is in the process of disposing.
        //
        // Returns:
        //     true if the base System.Windows.Forms.Control class is in the process of
        //     disposing; otherwise, false.
        bool Disposing { get; }
        //
        // Summary:
        //     Gets or sets which control borders are docked to its parent control and determines
        //     how a control is resized with its parent.
        //
        // Returns:
        //     One of the System.Windows.Forms.DockStyle values. The default is System.Windows.Forms.DockStyle.None.
        //
        // Exceptions:
        //   System.ComponentModel.InvalidEnumArgumentException:
        //     The value assigned is not one of the System.Windows.Forms.DockStyle values.
        DockStyle Dock { get; set; }
        //
        // Summary:
        //     Gets or sets a value indicating whether the control can respond to user interaction.
        //
        // Returns:
        //     true if the control can respond to user interaction; otherwise, false. The
        //     default is true.
        bool Enabled { get; set; }
        //
        // Summary:
        //     Gets a value indicating whether the control has input focus.
        //
        // Returns:
        //     true if the control has focus; otherwise, false.
        bool Focused { get; }
        //
        // Summary:
        //     Gets or sets the font of the text displayed by the control.
        //
        // Returns:
        //     The System.Drawing.Font to apply to the text displayed by the control. The
        //     default is the value of the System.Windows.Forms.Control.DefaultFont property.
        Font Font { get; set; }
        //
        // Summary:
        //     Gets or sets the foreground color of the control.
        //
        // Returns:
        //     The foreground System.Drawing.Color of the control. The default is the value
        //     of the System.Windows.Forms.Control.DefaultForeColor property.
        Color ForeColor { get; set; }
        //
        // Summary:
        //     Gets the window handle that the control is bound to.
        //
        // Returns:
        //     An System.IntPtr that contains the window handle (HWND) of the control.
        IntPtr Handle { get; }
        //
        // Summary:
        //     Gets a value indicating whether the control contains one or more child controls.
        //
        // Returns:
        //     true if the control contains one or more child controls; otherwise, false.
        bool HasChildren { get; }
        //
        // Summary:
        //     Gets or sets the height of the control.
        //
        // Returns:
        //     The height of the control in pixels.
        int Height { get; set; }
        //
        // Summary:
        //     Gets or sets the Input Method Editor (IME) mode of the control.
        //
        // Returns:
        //     One of the System.Windows.Forms.ImeMode values. The default is System.Windows.Forms.ImeMode.Inherit.
        //
        // Exceptions:
        //   System.ComponentModel.InvalidEnumArgumentException:
        //     The assigned value is not one of the System.Windows.Forms.ImeMode enumeration
        //     values.
        ImeMode ImeMode { get; set; }
        //
        // Summary:
        //     Gets a value indicating whether the caller must call an invoke method when
        //     making method calls to the control because the caller is on a different thread
        //     than the one the control was created on.
        //
        // Returns:
        //     true if the control's System.Windows.Forms.Control.Handle was created on
        //     a different thread than the calling thread (indicating that you must make
        //     calls to the control through an invoke method); otherwise, false.
        bool InvokeRequired { get; }
        //
        // Summary:
        //     Gets or sets a value indicating whether the control is visible to accessibility
        //     applications.
        //
        // Returns:
        //     true if the control is visible to accessibility applications; otherwise,
        //     false.
        bool IsAccessible { get; set; }
        //
        // Summary:
        //     Gets a value indicating whether the control has been disposed of.
        //
        // Returns:
        //     true if the control has been disposed of; otherwise, false.
        bool IsDisposed { get; }
        //
        // Summary:
        //     Gets a value indicating whether the control has a handle associated with
        //     it.
        //
        // Returns:
        //     true if a handle has been assigned to the control; otherwise, false.
        bool IsHandleCreated { get; }
        //
        // Summary:
        //     Gets a value indicating whether the control is mirrored.
        //
        // Returns:
        //     true if the control is mirrored; otherwise, false.
        bool IsMirrored { get; }
        //
        // Summary:
        //     Gets a cached instance of the control's layout engine.
        //
        // Returns:
        //     The System.Windows.Forms.Layout.LayoutEngine for the control's contents.
        LayoutEngine LayoutEngine { get; }
        //
        // Summary:
        //     Gets or sets the distance, in pixels, between the left edge of the control
        //     and the left edge of its container's client area.
        //
        // Returns:
        //     An System.Int32 representing the distance, in pixels, between the left edge
        //     of the control and the left edge of its container's client area.
        int Left { get; set; }
        //
        // Summary:
        //     Gets or sets the coordinates of the upper-left corner of the control relative
        //     to the upper-left corner of its container.
        //
        // Returns:
        //     The System.Drawing.Point that represents the upper-left corner of the control
        //     relative to the upper-left corner of its container.
        Point Location { get; set; }
        //
        // Summary:
        //     Gets or sets the space between controls.
        //
        // Returns:
        //     A System.Windows.Forms.Padding representing the space between controls.
        Padding Margin { get; set; }
        //
        // Summary:
        //     Gets or sets the size that is the upper limit that System.Windows.Forms.Control.GetPreferredSize(System.Drawing.Size)
        //     can specify.
        //
        // Returns:
        //     An ordered pair of type System.Drawing.Size representing the width and height
        //     of a rectangle.
        Size MaximumSize { get; set; }
        //
        // Summary:
        //     Gets or sets the size that is the lower limit that System.Windows.Forms.Control.GetPreferredSize(System.Drawing.Size)
        //     can specify.
        //
        // Returns:
        //     An ordered pair of type System.Drawing.Size representing the width and height
        //     of a rectangle.
        Size MinimumSize { get; set; }
        //
        // Summary:
        //     Gets or sets the name of the control.
        //
        // Returns:
        //     The name of the control. The default is an empty string ("").
        string Name { get; set; }
        //
        // Summary:
        //     Gets or sets padding within the control.
        //
        // Returns:
        //     A System.Windows.Forms.Padding representing the control's internal spacing
        //     characteristics.
        Padding Padding { get; set; }
        //
        // Summary:
        //     Gets or sets the parent container of the control.
        //
        // Returns:
        //     A System.Windows.Forms.Control that represents the parent or container control
        //     of the control.
        Control Parent { get; set; }
        //
        // Summary:
        //     Gets the size of a rectangular area into which the control can fit.
        //
        // Returns:
        //     A System.Drawing.Size containing the height and width, in pixels.
        Size PreferredSize { get; }
        //
        // Summary:
        //     Gets the product name of the assembly containing the control.
        //
        // Returns:
        //     The product name of the assembly containing the control.
        string ProductName { get; }
        //
        // Summary:
        //     Gets the version of the assembly containing the control.
        //
        // Returns:
        //     The file version of the assembly containing the control.
        string ProductVersion { get; }
        //
        // Summary:
        //     Gets a value indicating whether the control is currently re-creating its
        //     handle.
        //
        // Returns:
        //     true if the control is currently re-creating its handle; otherwise, false.
        bool RecreatingHandle { get; }
        //
        // Summary:
        //     Gets or sets the window region associated with the control.
        //
        // Returns:
        //     The window System.Drawing.Region associated with the control.
        Region Region { get; set; }
        //
        // Summary:
        //     Gets the distance, in pixels, between the right edge of the control and the
        //     left edge of its container's client area.
        //
        // Returns:
        //     An System.Int32 representing the distance, in pixels, between the right edge
        //     of the control and the left edge of its container's client area.
        int Right { get; }
        //
        // Summary:
        //     Gets or sets a value indicating whether control's elements are aligned to
        //     support locales using right-to-left fonts.
        //
        // Returns:
        //     One of the System.Windows.Forms.RightToLeft values. The default is System.Windows.Forms.RightToLeft.Inherit.
        //
        // Exceptions:
        //   System.ComponentModel.InvalidEnumArgumentException:
        //     The assigned value is not one of the System.Windows.Forms.RightToLeft values.
        RightToLeft RightToLeft { get; set; }
        //
        // Summary:
        //     Gets or sets the site of the control.
        //
        // Returns:
        //     The System.ComponentModel.ISite associated with the System.Windows.Forms.Control,
        //     if any.
        ISite Site { get; set; }
        //
        // Summary:
        //     Gets or sets the height and width of the control.
        //
        // Returns:
        //     The System.Drawing.Size that represents the height and width of the control
        //     in pixels.
        Size Size { get; set; }
        //
        // Summary:
        //     Gets or sets the tab order of the control within its container.
        //
        // Returns:
        //     The index value of the control within the set of controls within its container.
        //     The controls in the container are included in the tab order.
        int TabIndex { get; set; }
        //
        // Summary:
        //     Gets or sets a value indicating whether the user can give the focus to this
        //     control using the TAB key.
        //
        // Returns:
        //     true if the user can give the focus to the control using the TAB key; otherwise,
        //     false. The default is true.This property will always return true for an instance
        //     of the System.Windows.Forms.Form class.
        bool TabStop { get; set; }
        //
        // Summary:
        //     Gets or sets the object that contains data about the control.
        //
        // Returns:
        //     An System.Object that contains data about the control. The default is null.
        object Tag { get; set; }
        //
        // Summary:
        //     Gets or sets the text associated with this control.
        //
        // Returns:
        //     The text associated with this control.
        string Text { get; set; }
        //
        // Summary:
        //     Gets or sets the distance, in pixels, between the top edge of the control
        //     and the top edge of its container's client area.
        //
        // Returns:
        //     An System.Int32 representing the distance, in pixels, between the bottom
        //     edge of the control and the top edge of its container's client area.
        int Top { get; set; }
        //
        // Summary:
        //     Gets the parent control that is not parented by another Windows Forms control.
        //     Typically, this is the outermost System.Windows.Forms.Form that the control
        //     is contained in.
        //
        // Returns:
        //     The System.Windows.Forms.Control that represents the top-level control that
        //     contains the current control.
        Control TopLevelControl { get; }
        //
        // Summary:
        //     Gets or sets a value indicating whether to use the wait cursor for the current
        //     control and all child controls.
        //
        // Returns:
        //     true to use the wait cursor for the current control and all child controls;
        //     otherwise, false. The default is false.
        bool UseWaitCursor { get; set; }
        //
        // Summary:
        //     Gets or sets a value indicating whether the control is displayed.
        //
        // Returns:
        //     true if the control is displayed; otherwise, false. The default is true.
        bool Visible { get; set; }
        //
        // Summary:
        //     Gets or sets the width of the control.
        //
        // Returns:
        //     The width of the control in pixels.
        int Width { get; set; }
        //
        //IWindowTarget WindowTarget { get; set; }

        // Summary:
        //     This event is not relevant for this class.
        event EventHandler AutoSizeChanged;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.BackColor property
        //     changes.
        event EventHandler BackColorChanged;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.BackgroundImage
        //     property changes.
        event EventHandler BackgroundImageChanged;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.BackgroundImageLayout property
        //     changes.
        event EventHandler BackgroundImageLayoutChanged;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.BindingContext property
        //     changes.
        event EventHandler BindingContextChanged;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.CausesValidation
        //     property changes.
        event EventHandler CausesValidationChanged;
        //
        // Summary:
        //     Occurs when the focus or keyboard user interface (UI) cues change.
        event UICuesEventHandler ChangeUICues;
        //
        // Summary:
        //     Occurs when the control is clicked.
        event EventHandler Click;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.ClientSize property
        //     changes.
        event EventHandler ClientSizeChanged;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.ContextMenu property
        //     changes.
        event EventHandler ContextMenuChanged;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.ContextMenuStrip
        //     property changes.
        event EventHandler ContextMenuStripChanged;
        //
        // Summary:
        //     Occurs when a new control is added to the System.Windows.Forms.Control.ControlCollection.
        event ControlEventHandler ControlAdded;
        //
        // Summary:
        //     Occurs when a control is removed from the System.Windows.Forms.Control.ControlCollection.
        event ControlEventHandler ControlRemoved;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.Cursor property
        //     changes.
        event EventHandler CursorChanged;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.Dock property changes.
        event EventHandler DockChanged;
        //
        // Summary:
        //     Occurs when the control is double-clicked.
        event EventHandler DoubleClick;
        //
        // Summary:
        //     Occurs when a drag-and-drop operation is completed.
        event DragEventHandler DragDrop;
        //
        // Summary:
        //     Occurs when an object is dragged into the control's bounds.
        event DragEventHandler DragEnter;
        //
        // Summary:
        //     Occurs when an object is dragged out of the control's bounds.
        event EventHandler DragLeave;
        //
        // Summary:
        //     Occurs when an object is dragged over the control's bounds.
        event DragEventHandler DragOver;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.Enabled property value has changed.
        event EventHandler EnabledChanged;
        //
        // Summary:
        //     Occurs when the control is entered.
        event EventHandler Enter;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.Font property value changes.
        event EventHandler FontChanged;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.ForeColor property value changes.
        event EventHandler ForeColorChanged;
        //
        // Summary:
        //     Occurs during a drag operation.
        event GiveFeedbackEventHandler GiveFeedback;
        //
        // Summary:
        //     Occurs when the control receives focus.
        event EventHandler GotFocus;
        //
        // Summary:
        //     Occurs when a handle is created for the control.
        event EventHandler HandleCreated;
        //
        // Summary:
        //     Occurs when the control's handle is in the process of being destroyed.
        event EventHandler HandleDestroyed;
        //
        // Summary:
        //     Occurs when the user requests help for a control.
        event HelpEventHandler HelpRequested;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.ImeMode property has changed.
        event EventHandler ImeModeChanged;
        //
        // Summary:
        //     Occurs when a control's display requires redrawing.
        event InvalidateEventHandler Invalidated;
        //
        // Summary:
        //     Occurs when a key is pressed while the control has focus.
        event KeyEventHandler KeyDown;
        //
        // Summary:
        //     Occurs when a key is pressed while the control has focus.
        event KeyPressEventHandler KeyPress;
        //
        // Summary:
        //     Occurs when a key is released while the control has focus.
        event KeyEventHandler KeyUp;
        //
        // Summary:
        //     Occurs when a control should reposition its child controls.
        event LayoutEventHandler Layout;
        //
        // Summary:
        //     Occurs when the input focus leaves the control.
        event EventHandler Leave;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.Location property value has
        //     changed.
        event EventHandler LocationChanged;
        //
        // Summary:
        //     Occurs when the control loses focus.
        event EventHandler LostFocus;
        //
        // Summary:
        //     Occurs when the control's margin changes.
        event EventHandler MarginChanged;
        //
        // Summary:
        //     Occurs when the control loses mouse capture.
        event EventHandler MouseCaptureChanged;
        //
        // Summary:
        //     Occurs when the control is clicked by the mouse.
        event MouseEventHandler MouseClick;
        //
        // Summary:
        //     Occurs when the control is double clicked by the mouse.
        event MouseEventHandler MouseDoubleClick;
        //
        // Summary:
        //     Occurs when the mouse pointer is over the control and a mouse button is pressed.
        event MouseEventHandler MouseDown;
        //
        // Summary:
        //     Occurs when the mouse pointer enters the control.
        event EventHandler MouseEnter;
        //
        // Summary:
        //     Occurs when the mouse pointer rests on the control.
        event EventHandler MouseHover;
        //
        // Summary:
        //     Occurs when the mouse pointer leaves the control.
        event EventHandler MouseLeave;
        //
        // Summary:
        //     Occurs when the mouse pointer is moved over the control.
        event MouseEventHandler MouseMove;
        //
        // Summary:
        //     Occurs when the mouse pointer is over the control and a mouse button is released.
        event MouseEventHandler MouseUp;
        //
        // Summary:
        //     Occurs when the mouse wheel moves while the control has focus.
        event MouseEventHandler MouseWheel;
        //
        // Summary:
        //     Occurs when the control is moved.
        event EventHandler Move;
        //
        // Summary:
        //     Occurs when the control's padding changes.
        event EventHandler PaddingChanged;
        //
        // Summary:
        //     Occurs when the control is redrawn.
        event PaintEventHandler Paint;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.Parent property value changes.
        event EventHandler ParentChanged;
        //
        // Summary:
        //     Occurs before the System.Windows.Forms.Control.KeyDown event when a key is
        //     pressed while focus is on this control.
        //event PreviewKeyDownEventHandler PreviewKeyDown;
        //
        // Summary:
        //     Occurs when System.Windows.Forms.AccessibleObject is providing help to accessibility
        //     applications.
        event QueryAccessibilityHelpEventHandler QueryAccessibilityHelp;
        //
        // Summary:
        //     Occurs during a drag-and-drop operation and enables the drag source to determine
        //     whether the drag-and-drop operation should be canceled.
        event QueryContinueDragEventHandler QueryContinueDrag;
        //
        // Summary:
        //     Occurs when the value of the System.Windows.Forms.Control.Region property
        //     changes.
        event EventHandler RegionChanged;
        //
        // Summary:
        //     Occurs when the control is resized.
        event EventHandler Resize;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.RightToLeft property value changes.
        event EventHandler RightToLeftChanged;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.Size property value changes.
        event EventHandler SizeChanged;
        //
        // Summary:
        //     Occurs when the control style changes.
        event EventHandler StyleChanged;
        //
        // Summary:
        //     Occurs when the system colors change.
        event EventHandler SystemColorsChanged;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.TabIndex property value changes.
        event EventHandler TabIndexChanged;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.TabStop property value changes.
        event EventHandler TabStopChanged;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.Text property value changes.
        event EventHandler TextChanged;
        //
        // Summary:
        //     Occurs when the control is finished validating.
        event EventHandler Validated;
        //
        // Summary:
        //     Occurs when the control is validating.
        event CancelEventHandler Validating;
        //
        // Summary:
        //     Occurs when the System.Windows.Forms.Control.Visible property value changes.
        event EventHandler VisibleChanged;

        //
        // Summary:
        //     Executes the specified delegate asynchronously on the thread that the control's
        //     underlying handle was created on.
        //
        // Parameters:
        //   method:
        //     A delegate to a method that takes no parameters.
        //
        // Returns:
        //     An System.IAsyncResult that represents the result of the System.Windows.Forms.Control.BeginInvoke(System.Delegate)
        //     operation.
        IAsyncResult BeginInvoke(Delegate method);
        //
        // Summary:
        //     Executes the specified delegate asynchronously with the specified arguments,
        //     on the thread that the control's underlying handle was created on.
        //
        // Parameters:
        //   args:
        //     An array of objects to pass as arguments to the given method. This can be
        //     null if no arguments are needed.
        //
        //   method:
        //     A delegate to a method that takes parameters of the same number and type
        //     that are contained in the args parameter.
        //
        // Returns:
        //     An System.IAsyncResult that represents the result of the System.Windows.Forms.Control.BeginInvoke(System.Delegate)
        //     operation.
        IAsyncResult BeginInvoke(Delegate method, params object[] args);
        //
        // Summary:
        //     Brings the control to the front of the z-order.
        void BringToFront();
        //
        // Summary:
        //     Retrieves a value indicating whether the specified control is a child of
        //     the control.
        //
        // Parameters:
        //   ctl:
        //     The System.Windows.Forms.Control to evaluate.
        //
        // Returns:
        //     true if the specified control is a child of the control; otherwise, false.
        bool Contains(Control ctl);
        //
        // Summary:
        //     Forces the creation of the control, including the creation of the handle
        //     and any child controls.
        void CreateControl();
        //
        // Summary:
        //     Creates the System.Drawing.Graphics for the control.
        //
        // Returns:
        //     The System.Drawing.Graphics for the control.
        Graphics CreateGraphics();
        //
        // Summary:
        //     Begins a drag-and-drop operation.
        //
        // Parameters:
        //   data:
        //     The data to drag.
        //
        //   allowedEffects:
        //     One of the System.Windows.Forms.DragDropEffects values.
        //
        // Returns:
        //     A value from the System.Windows.Forms.DragDropEffects enumeration that represents
        //     the final effect that was performed during the drag-and-drop operation.
        DragDropEffects DoDragDrop(object data, DragDropEffects allowedEffects);
        //
        // Summary:
        //     Supports rendering to the specified bitmap.
        //
        // Parameters:
        //   bitmap:
        //     The bitmap to be drawn to.
        //
        //   targetBounds:
        //     The bounds within which the control is rendered.
        void DrawToBitmap(Bitmap bitmap, Rectangle targetBounds);
        //
        // Summary:
        //     Retrieves the return value of the asynchronous operation represented by the
        //     System.IAsyncResult passed.
        //
        // Parameters:
        //   asyncResult:
        //     The System.IAsyncResult that represents a specific invoke asynchronous operation,
        //     returned when calling System.Windows.Forms.Control.BeginInvoke(System.Delegate).
        //
        // Returns:
        //     The System.Object generated by the asynchronous operation.
        //
        // Exceptions:
        //   System.ArgumentException:
        //     The asyncResult object was not created by a preceding call of the System.Windows.Forms.Control.BeginInvoke(System.Delegate)
        //     method from the same control.
        //
        //   System.ArgumentNullException:
        //     The asyncResult parameter value is null.
        object EndInvoke(IAsyncResult asyncResult);
        //
        // Summary:
        //     Retrieves the form that the control is on.
        //
        // Returns:
        //     The System.Windows.Forms.Form that the control is on.
        Form FindForm();
        //
        // Summary:
        //     Sets input focus to the control.
        //
        // Returns:
        //     true if the input focus request was successful; otherwise, false.
        bool Focus();
        //
        // Summary:
        //     Retrieves the child control that is located at the specified coordinates.
        //
        // Parameters:
        //   pt:
        //     A System.Drawing.Point that contains the coordinates where you want to look
        //     for a control. Coordinates are expressed relative to the upper-left corner
        //     of the control's client area.
        //
        // Returns:
        //     A System.Windows.Forms.Control that represents the control that is located
        //     at the specified point.
        Control GetChildAtPoint(Point pt);
        //
        // Summary:
        //     Retrieves the child control that is located at the specified coordinates,
        //     specifying whether to ignore child controls of a certain type.
        //
        // Parameters:
        //   skipValue:
        //     One of the values of System.Windows.Forms.GetChildAtPointSkip, determining
        //     whether to ignore child controls of a certain type.
        //
        //   pt:
        //     A System.Drawing.Point that contains the coordinates where you want to look
        //     for a control. Coordinates are expressed relative to the upper-left corner
        //     of the control's client area.
        //
        // Returns:
        //     The child System.Windows.Forms.Control at the specified coordinates.
        Control GetChildAtPoint(Point pt, GetChildAtPointSkip skipValue);
        //
        // Summary:
        //     Returns the next System.Windows.Forms.ContainerControl up the control's chain
        //     of parent controls.
        //
        // Returns:
        //     An System.Windows.Forms.IContainerControl, that represents the parent of
        //     the System.Windows.Forms.Control.
        IContainerControl GetContainerControl();
        //
        // Summary:
        //     Retrieves the next control forward or back in the tab order of child controls.
        //
        // Parameters:
        //   forward:
        //     true to search forward in the tab order; false to search backward.
        //
        //   ctl:
        //     The System.Windows.Forms.Control to start the search with.
        //
        // Returns:
        //     The next System.Windows.Forms.Control in the tab order.
        Control GetNextControl(Control ctl, bool forward);
        //
        // Summary:
        //     Retrieves the size of a rectangular area into which a control can be fitted.
        //
        // Parameters:
        //   proposedSize:
        //     The custom-sized area for a control.
        //
        // Returns:
        //     An ordered pair of type System.Drawing.Size representing the width and height
        //     of a rectangle.
        Size GetPreferredSize(Size proposedSize);
        //
        // Summary:
        //     Conceals the control from the user.
        void Hide();
        //
        // Summary:
        //     Invalidates the entire surface of the control and causes the control to be
        //     redrawn.
        void Invalidate();
        //
        // Summary:
        //     Invalidates a specific region of the control and causes a paint message to
        //     be sent to the control. Optionally, invalidates the child controls assigned
        //     to the control.
        //
        // Parameters:
        //   invalidateChildren:
        //     true to invalidate the control's child controls; otherwise, false.
        void Invalidate(bool invalidateChildren);
        //
        // Summary:
        //     Invalidates the specified region of the control (adds it to the control's
        //     update region, which is the area that will be repainted at the next paint
        //     operation), and causes a paint message to be sent to the control.
        //
        // Parameters:
        //   rc:
        //     A System.Drawing.Rectangle that represents the region to invalidate.
        void Invalidate(Rectangle rc);
        //
        // Summary:
        //     Invalidates the specified region of the control (adds it to the control's
        //     update region, which is the area that will be repainted at the next paint
        //     operation), and causes a paint message to be sent to the control.
        //
        // Parameters:
        //   region:
        //     The System.Drawing.Region to invalidate.
        void Invalidate(Region region);
        //
        // Summary:
        //     Invalidates the specified region of the control (adds it to the control's
        //     update region, which is the area that will be repainted at the next paint
        //     operation), and causes a paint message to be sent to the control. Optionally,
        //     invalidates the child controls assigned to the control.
        //
        // Parameters:
        //   rc:
        //     A System.Drawing.Rectangle that represents the region to invalidate.
        //
        //   invalidateChildren:
        //     true to invalidate the control's child controls; otherwise, false.
        void Invalidate(Rectangle rc, bool invalidateChildren);
        //
        // Summary:
        //     Invalidates the specified region of the control (adds it to the control's
        //     update region, which is the area that will be repainted at the next paint
        //     operation), and causes a paint message to be sent to the control. Optionally,
        //     invalidates the child controls assigned to the control.
        //
        // Parameters:
        //   region:
        //     The System.Drawing.Region to invalidate.
        //
        //   invalidateChildren:
        //     true to invalidate the control's child controls; otherwise, false.
        void Invalidate(Region region, bool invalidateChildren);
        //
        // Summary:
        //     Executes the specified delegate on the thread that owns the control's underlying
        //     window handle.
        //
        // Parameters:
        //   method:
        //     A delegate that contains a method to be called in the control's thread context.
        //
        // Returns:
        //     The return value from the delegate being invoked, or null if the delegate
        //     has no return value.
        object Invoke(Delegate method);
        //
        // Summary:
        //     Executes the specified delegate, on the thread that owns the control's underlying
        //     window handle, with the specified list of arguments.
        //
        // Parameters:
        //   args:
        //     An array of objects to pass as arguments to the specified method. This parameter
        //     can be null if the method takes no arguments.
        //
        //   method:
        //     A delegate to a method that takes parameters of the same number and type
        //     that are contained in the args parameter.
        //
        // Returns:
        //     An System.Object that contains the return value from the delegate being invoked,
        //     or null if the delegate has no return value.
        object Invoke(Delegate method, params object[] args);
        //
        // Summary:
        //     Forces the control to apply layout logic to all its child controls.
        void PerformLayout();
        //
        // Summary:
        //     Forces the control to apply layout logic to all its child controls.
        //
        // Parameters:
        //   affectedControl:
        //     A System.Windows.Forms.Control that represents the most recently changed
        //     control.
        //
        //   affectedProperty:
        //     The name of the most recently changed property on the control.
        void PerformLayout(Control affectedControl, string affectedProperty);
        //
        // Summary:
        //     Computes the location of the specified screen point into client coordinates.
        //
        // Parameters:
        //   p:
        //     The screen coordinate System.Drawing.Point to convert.
        //
        // Returns:
        //     A System.Drawing.Point that represents the converted System.Drawing.Point,
        //     p, in client coordinates.
        Point PointToClient(Point p);
        //
        // Summary:
        //     Computes the location of the specified client point into screen coordinates.
        //
        // Parameters:
        //   p:
        //     The client coordinate System.Drawing.Point to convert.
        //
        // Returns:
        //     A System.Drawing.Point that represents the converted System.Drawing.Point,
        //     p, in screen coordinates.
        Point PointToScreen(Point p);
        //
        // Summary:
        //     Preprocesses keyboard or input messages within the message loop before they
        //     are dispatched.
        //
        // Parameters:
        //   msg:
        //     A System.Windows.Forms.Message that represents the message to process.
        //
        // Returns:
        //     One of the System.Windows.Forms.PreProcessControlState values, depending
        //     on whether System.Windows.Forms.Control.PreProcessMessage(System.Windows.Forms.Message@)
        //     is true or false and whether System.Windows.Forms.Control.IsInputKey(System.Windows.Forms.Keys)
        //     or System.Windows.Forms.Control.IsInputChar(System.Char) are true or false.
        //PreProcessControlState PreProcessControlMessage(ref Message msg);
        //
        // Summary:
        //     Preprocesses keyboard or input messages within the message loop before they
        //     are dispatched.
        //
        // Parameters:
        //   msg:
        //     A System.Windows.Forms.Message, passed by reference, that represents the
        //     message to process. The possible values are WM_KEYDOWN, WM_SYSKEYDOWN, WM_CHAR,
        //     and WM_SYSCHAR.
        //
        // Returns:
        //     true if the message was processed by the control; otherwise, false.
        //bool PreProcessMessage(ref Message msg);
        //
        // Summary:
        //     Computes the size and location of the specified screen rectangle in client
        //     coordinates.
        //
        // Parameters:
        //   r:
        //     The screen coordinate System.Drawing.Rectangle to convert.
        //
        // Returns:
        //     A System.Drawing.Rectangle that represents the converted System.Drawing.Rectangle,
        //     r, in client coordinates.
        Rectangle RectangleToClient(Rectangle r);
        //
        // Summary:
        //     Computes the size and location of the specified client rectangle in screen
        //     coordinates.
        //
        // Parameters:
        //   r:
        //     The screen coordinate System.Drawing.Rectangle to convert.
        //
        // Returns:
        //     A System.Drawing.Rectangle that represents the converted System.Drawing.Rectangle,
        //     p, in screen coordinates.
        Rectangle RectangleToScreen(Rectangle r);
        //
        // Summary:
        //     Forces the control to invalidate its client area and immediately redraw itself
        //     and any child controls.
        void Refresh();
        //
        void ResetBackColor();
        //
        void ResetBindings();
        //
        void ResetCursor();
        //
        void ResetFont();
        //
        void ResetForeColor();
        //
        void ResetImeMode();
        //
        void ResetRightToLeft();
        //
        // Summary:
        //     Resets the System.Windows.Forms.Control.Text property to its default value.
        void ResetText();
        //
        // Summary:
        //     Resumes usual layout logic.
        void ResumeLayout();
        //
        // Summary:
        //     Resumes usual layout logic, optionally forcing an immediate layout of pending
        //     layout requests.
        //
        // Parameters:
        //   performLayout:
        //     true to execute pending layout requests; otherwise, false.
        void ResumeLayout(bool performLayout);
        //
        void Scale(float ratio);
        //
        // Summary:
        //     Scales the control and all child controls by the specified scaling factor.
        //
        // Parameters:
        //   factor:
        //     A System.Drawing.SizeF containing the horizontal and vertical scaling factors.
        void Scale(SizeF factor);
        //
        void Scale(float dx, float dy);
        //
        // Summary:
        //     Activates the control.
        void Select();
        //
        // Summary:
        //     Activates the next control.
        //
        // Parameters:
        //   forward:
        //     true to move forward in the tab order; false to move backward in the tab
        //     order.
        //
        //   ctl:
        //     The System.Windows.Forms.Control at which to start the search.
        //
        //   nested:
        //     true to include nested (children of child controls) child controls; otherwise,
        //     false.
        //
        //   wrap:
        //     true to continue searching from the first control in the tab order after
        //     the last control has been reached; otherwise, false.
        //
        //   tabStopOnly:
        //     true to ignore the controls with the System.Windows.Forms.Control.TabStop
        //     property set to false; otherwise, false.
        //
        // Returns:
        //     true if a control was activated; otherwise, false.
        bool SelectNextControl(Control ctl, bool forward, bool tabStopOnly, bool nested, bool wrap);
        //
        // Summary:
        //     Sends the control to the back of the z-order.
        void SendToBack();
        //
        // Summary:
        //     Sets the bounds of the control to the specified location and size.
        //
        // Parameters:
        //   y:
        //     The new System.Windows.Forms.Control.Top property value of the control.
        //
        //   width:
        //     The new System.Windows.Forms.Control.Width property value of the control.
        //
        //   height:
        //     The new System.Windows.Forms.Control.Height property value of the control.
        //
        //   x:
        //     The new System.Windows.Forms.Control.Left property value of the control.
        void SetBounds(int x, int y, int width, int height);
        //
        // Summary:
        //     Sets the specified bounds of the control to the specified location and size.
        //
        // Parameters:
        //   y:
        //     The new System.Windows.Forms.Control.Top property value of the control.
        //
        //   specified:
        //     A bitwise combination of the System.Windows.Forms.BoundsSpecified values.
        //     For any parameter not specified, the current value will be used.
        //
        //   width:
        //     The new System.Windows.Forms.Control.Width property value of the control.
        //
        //   height:
        //     The new System.Windows.Forms.Control.Height property value of the control.
        //
        //   x:
        //     The new System.Windows.Forms.Control.Left property value of the control.
        void SetBounds(int x, int y, int width, int height, BoundsSpecified specified);
        //
        // Summary:
        //     Displays the control to the user.
        void Show();
        //
        // Summary:
        //     Temporarily suspends the layout logic for the control.
        void SuspendLayout();
        //
        // Summary:
        //     Causes the control to redraw the invalidated regions within its client area.
        void Update();
    }
}
